import Vue from "vue";

/**
 * 获取组件根元素
 * @param {object} comp 组件
 * @param {object} props 组件属性
 * @returns {object} 组件根元素
 */
function getComponentRootDom(comp, props) {
  const vm = new Vue({
    render: (h) => h(comp, { props }),
  });
  return vm.$mount().$el;
}

/**
 * 防抖函数，用于限制函数的执行频率
 * 当函数被频繁调用时，只有在停止调用后等待指定时间才会执行
 * @param {Function} func - 需要进行防抖处理的函数
 * @param {number} wait - 等待时间（毫秒），在此期间内没有新的调用才会执行函数
 * @returns {Function} 返回一个经过防抖处理的函数
 */
function debounce(func, wait = 200) {
  let timeout;
  return function (...args) {
    clearTimeout(timeout);
    timeout = setTimeout(() => {
      func(...args);
    }, wait);
  };
}

function setToken(token) {
  localStorage.setItem("token", token);
}

function getToken() {
  return localStorage.getItem("token");
}

function removeToken() {
  localStorage.removeItem("token");
}

function setSHortcutIcon(icon) {
  if (!icon) {
    return;
  }
  const link =
    document.querySelector("link[rel*='icon']") ||
    document.createElement("link");
  link.type = "image/x-icon";
  link.rel = "shortcut icon";
  link.href = icon;
  document.getElementsByTagName("head")[0].appendChild(link);
}



export {
  getComponentRootDom,
  debounce,
  setToken,
  getToken,
  removeToken,
  setSHortcutIcon,
};
